{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1.14.0'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "tf.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow.examples.tutorials.mnist import input_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "tf.logging.set_verbosity(tf.logging.INFO)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting ./data/train-images-idx3-ubyte.gz\n",
      "Extracting ./data/train-labels-idx1-ubyte.gz\n",
      "Extracting ./data/t10k-images-idx3-ubyte.gz\n",
      "Extracting ./data/t10k-labels-idx1-ubyte.gz\n",
      "(55000, 784)\n",
      "(55000,)\n",
      "(5000, 784)\n",
      "(5000,)\n",
      "(10000, 784)\n",
      "(10000,)\n"
     ]
    }
   ],
   "source": [
    "mnist = input_data.read_data_sets('./data/')\n",
    "\n",
    "print(mnist.train.images.shape)\n",
    "print(mnist.train.labels.shape)\n",
    "\n",
    "print(mnist.validation.images.shape)\n",
    "print(mnist.validation.labels.shape)\n",
    "\n",
    "print(mnist.test.images.shape)\n",
    "print(mnist.test.labels.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x1152 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "plt.figure(figsize=(16,16))\n",
    "\n",
    "for idx in range(16):\n",
    "    plt.subplot(4,4, idx+1)\n",
    "    plt.axis('off')\n",
    "    plt.title('[{}]'.format(mnist.train.labels[idx]))\n",
    "    plt.imshow(mnist.train.images[idx].reshape((28,28)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = tf.placeholder(\"float\", [None, 784])\n",
    "y = tf.placeholder(\"int64\", [None])\n",
    "learning_rate = tf.placeholder(\"float\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def initialize(shape, stddev=0.1):\n",
    "  return tf.truncated_normal(shape, stddev=0.1)\n",
    "\n",
    "L1_units_count = 100\n",
    "\n",
    "W_1 = tf.Variable(initialize([784, L1_units_count]))\n",
    "b_1 = tf.Variable(initialize([L1_units_count]))\n",
    "logits_1 = tf.matmul(x, W_1) + b_1\n",
    "output_1 = tf.nn.relu(logits_1)\n",
    "\n",
    "L2_units_count = 10 \n",
    "W_2 = tf.Variable(initialize([L1_units_count, L2_units_count]))\n",
    "b_2 = tf.Variable(initialize([L2_units_count]))\n",
    "logits_2 = tf.matmul(output_1, W_2) + b_2  \n",
    "\n",
    "logits = logits_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "cross_entropy_loss = tf.reduce_mean(\n",
    "    tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y))\n",
    "\n",
    "optimizer = tf.train.GradientDescentOptimizer(\n",
    "    learning_rate=learning_rate).minimize(cross_entropy_loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = tf.nn.softmax(logits)\n",
    "correct_pred = tf.equal(tf.argmax(pred, 1), y)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 32\n",
    "trainig_step = 1000\n",
    "\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "after 100 training steps, the loss is 0.496329, the validation accuracy is 0.9004\n",
      "after 200 training steps, the loss is 0.421988, the validation accuracy is 0.8834\n",
      "after 300 training steps, the loss is 0.380311, the validation accuracy is 0.9308\n",
      "after 400 training steps, the loss is 0.359763, the validation accuracy is 0.937\n",
      "after 500 training steps, the loss is 0.120649, the validation accuracy is 0.9424"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "W0319 18:33:56.922581 15860 deprecation.py:323] From E:\\anaconda\\lib\\site-packages\\tensorflow\\python\\training\\saver.py:960: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use standard file APIs to delete files with this prefix.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "after 600 training steps, the loss is 0.248602, the validation accuracy is 0.9504\n",
      "after 700 training steps, the loss is 0.176992, the validation accuracy is 0.9472\n",
      "after 800 training steps, the loss is 0.0565796, the validation accuracy is 0.9574\n",
      "after 900 training steps, the loss is 0.213694, the validation accuracy is 0.954\n",
      "the training is finish!\n",
      "the test accuarcy is: 0.9352\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "\n",
    "    #定义验证集与测试集\n",
    "    validate_data = {\n",
    "        x: mnist.validation.images,\n",
    "        y: mnist.validation.labels,\n",
    "    }\n",
    "    test_data = {x: mnist.test.images, y: mnist.test.labels}\n",
    "\n",
    "    for i in range(trainig_step):\n",
    "        xs, ys = mnist.train.next_batch(batch_size)\n",
    "        _, loss = sess.run(\n",
    "            [optimizer, cross_entropy_loss],\n",
    "            feed_dict={\n",
    "                x: xs,\n",
    "                y: ys,\n",
    "                learning_rate: 0.5\n",
    "            })\n",
    "\n",
    "        #每100次训练打印一次损失值与验证准确率\n",
    "        if i > 0 and i % 100 == 0:\n",
    "            validate_accuracy = sess.run(accuracy, feed_dict=validate_data)\n",
    "            print(\n",
    "                \"after %d training steps, the loss is %g, the validation accuracy is %g\"\n",
    "                % (i, loss, validate_accuracy))\n",
    "            saver.save(sess, './model.ckpt', global_step=i)\n",
    "\n",
    "    print(\"the training is finish!\")\n",
    "    #最终的测试准确率\n",
    "    acc = sess.run(accuracy, feed_dict=test_data)\n",
    "    print(\"the test accuarcy is:\", acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "I0319 18:35:25.335649 15860 saver.py:1280] Restoring parameters from ./model.ckpt-900\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcoAAAHRCAYAAADqjfmEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd5gUxdYG8PdsYMk5SpYcFBXFgAHMCTPqFQVzvpgzZsX0XRWzXMUcUDF7zYqCIEkBJaqA5Cg5LMvu+f6o3q6uYaaZnbS77Pt7Hh5OT9XUVG9Pd01XdVeLqoKIiIiiyyrtChAREZVlbCiJiIhCsKEkIiIKwYaSiIgoBBtKIiKiEGwoiYiIQrChJCIiCpHxhlJE7hKRAhHZICLV4nzPXyKyVUReD8mjIrJRRO5PXW1TT0TyvHUvEJH7Srs+qcBtunNt04q+PYH41qc8EZGXvfWZF2f+9t72LxSRC2Pk6SUiRV6+o1Na4RQTkQu8eqqItC3p+xNqKL0PDP4rFJEnS1DEcFWtrqobvfI+jyhvq4j8VpxZVdsAGBxHud1U9bZAPfuIyO9emWNEpHMgLU9EHhORxSKyWkSeEZHckHUOK+swEZkrIktE5IzA67VF5BcRqRFYl3xVrQ7gjTjWJyO8v8WLIvK3iKwXkV9F5JgSFhO5TW/w/l7rvb/NDcHMpb1NRaS+iPwkIqtEZI2IjBWRnoH08r5NrxSRiSKSLyIvJ1BE5PbsLSLfi8jaaAfbNG1PEZH7RGSR97kjRaRLtEJFpEWU45KKyHVeejcRmSYiK0XkmsD7ckVknIg0T3B9MkZE6orIB2J+bPwtImeVsIiHVbVVoLw8ERkmIutEZKmIXFucpqqzve/0qB2Uudj7nnzhlSkicpuIzPfKfVtEagY+s6mIfCQi/4jIQhG5NJ6Ki8hLEtHIicjj3n4+VkSaBl7vJyJDgu9X1Re99UlIQg2l94ep7n1wIwCbAbybaCVU9ZiIMsckUx4AiEg7mAPXpQBqA/gEwMcikuNluRnA3gC6AmgPYC8AgxIs63EAfQAcDeBZEcn2Xn8AwIOquj6ZdcmAHAALABwCoBaA2wG8IyKtkihTAPQHUAfm73KliJyZTCVTuU0BbABwPoAGXh0fAvDJTrRNFwO4D8CwFJW30Svrhh1ljFcc27MvzDY6CEBdAGMBvBatLFWdH3EM2Q1AEYARXpYHAFwPoBuAQSLS2Hv9WgAjVHVBqtYrjZ4GsBXmmNsP5nsZ9YdDnO4C0A5ASwC9AdwoyZ8Z9gdwDoCeAHYBUAVA8CTqdQBzYdbhOACDRaR3WIEiciCANhGv9QDQHUBjAKMB3OK9XgtmO9+R5Ho4UtH1ehqA5djxL4+4eAfngxBjhyiBowCMUtXRqroN5kDYFKYxAMxB8AlV/UdVVwB4AmanTKSsaqr6u6pOgfki1/M2ZGtVfSfJ9Ug7Vd2oqnep6jxVLVLVT2G+zN2TKPNhVf1FVbep6iwAH8HsPMlI2TZV1S2qOktVi2Aa9UKYBrOul6W8b9P3VfVDAKtSVN54VX0NwJxUlOfZ0fZsDWC0qs5R1UKYg2zn6EVtpz+AH1V1XqCs71R1EYA/ALQQkRYATgXwWErWJo3EdIGfCuB2Vd2gqqMBfAzTKCWqP4B7VXW1qs4A8F8A5yZZ1T4AXlTVBaq6AWabniEiVUWkOoBeAO5X1QJv33oPsY+78H40PQngyoik4u9GPoBvAezqvX4/gEdUdW2S6+FIRUM5AMCrGpg01uvKOjDB8vrD7Dxzk6yXeP8il7uGpDfzfpGUtKzlXtdON5hfsathzkgGJrkOpUJEGsGckU0LvJbwNhURgfnxM21HeXdUFFK3TYvrNhXAFpiDzguqutxL2qm2aaQk99GUVQPh2/NtAG3FjJflwhxrvoiz7P4AXgks/w7gSBFpBqAVgL9gfkjdqKoFCa9B5rQHUKiqswOvTQHQBfC7ntd4jf8OiUgdmDO+KdHKS0K0bZoHc+YqgdeC6V0R2zUwP3imRrw+DcBBIlIFwGEAponI3gA6qOqbSdQ/qqQaSm+jHAL3CwlVre394klEfwAvJ1Mvz9cADhEz4FwJwK0AKgGo6qV/DuAqEWngdcMUHwCrbl/UDsu6FMAQAENhfuFdBvMrp7KIfOmN7RwSpdwyxzsgvQHgFVWdWfx6ktv0Lpjv2ktJVi+V2xQAoKq7A6gJ4CyYLpxiO802jSbJ7ZkqO9qeS2B6qmbBDO/0hTlwhhKRg2C69t4LvHw9zDb82CujJ4D1AOZ4Y2Y/iEjflKxVelQHEHmWtBZADcDveq6tqvNLUF5xGduVl4TPAVwoIq28H6g3ea9X9YYrfgJwu4hUFpG9YM6So+6f3rjxJYjSjaqqv8N0q/8MoAXMmesQAANFZKCI/Cgib4hI7STXB0DyZ5T9YU5/kz37A+D3RTeG+wWPli948U+/aHm8g/wAAE/B7HD1AUwHsNDLcj+AXwFMhhkT/RBAAUw3conKUtXJqtpLVff1Xj8f5kKAFwDcDeA8AK95Z1ZllohkwXR5b8X2XR2JlnklzPfkOK+bJFa+jG7TiHK3qOpbAG72ziB3mm1aWlK0Pe8EsA+A5gAqw/zdvxORmD98PANgxh03BD7rb1U9VlX3ghkGuAem8fw/AMMBnADgURGpG63AMmADzA+6oJowjX2i5RWXEVd54l4oFevMdRiAtwCMhDnr+957vXib9oPpNl0A4FmYH+ULEd3jAO6J1Y2qqo+pajdVPQPAGTA/qrIAXAxzljkD5rqFpKWioXxlh7niNwDA+8EveDQRF//EvNJQVd9T1a6qWg9mp2sJYIKXtllVr1TVpqq6K8xYziRvLKREZUV4DMAgVd0Mc0HBRG+cJBfmwpEyyTvgvwjzS/zUVHRHicj5MF/Uw1Q11s4AoHS2aRS5sGMdQeVym5amVGxPmAtvhqvqQm+s+2WYceSY45ReV1xfhB+X7oDpZl8Guz3XwhywS3zrQIbMBpDjXQBVrBsSHM5Q1dUwP066xVteYHtWj3XmquYahztVtZWqNvPKW+T9K/7BcryqNvB+hNYDMD7GRx4G4BExV+Qu9V4bKxFX+3pDRZfA/PjpCmCqd/yaAGD3sL9DvHJ2nCU6ETkAZuA9qatTA+UVf8FPSUV5XpndYc4u6sL8av2kuDvRu5xYYb4s+8Jc6XlBImUF8hwBoLKai2EAc0HMoSKyAKafPiUXVqTJswA6ATjcaxCS4p1FDAbQW1VTdgFIqrapiOwH8/0fDyAbppu2EYBxEfnK5Tb1LoLIgVm3bBGpDGCbd9FMIuVlwXSL5ppFqQygSFW3JlnPsP1qAoC+IvI2gBUwZyO5AP4MKfJkAGtgz2QiP68zzAUlxReWFW/PtTDjaPF2XWaUqm4UkfcB3CPmvsY9AJwI4IAkin0V5grgiTDf/YtgekoS5p2R14G56KsTgEdhzgqLvPROMD9I8gGcDuBIL1807eGezC2BuVhoSkS+RwHcqaqbRGQugH0CFw6l5NiTzBll8dnfdqfq3qn5QSUs7ySYPvKoX/AEDYHZaWZ5/18USGsD0z23EebX582q+lVxotd1dGucZUFE8gA8AuCqwMv/BvAcgG8AXF6CM5uMEpGWML/I9gCwNFqXWQLb9D6YX4sTAuU9l4Lqpmqb5sFcbr8K5tfusTDdw4sD+cvtNoW5LWYzzBn92V7s3yqTwPY82CvjfzBjQpsBfBX6jviEbc+HYA6Kk720a2B6O9YAgIg8F+U7td3FhRGeBnBVYLvdAvMjaRqAwaq6NMb7yoLLYW63WA7TvXmZqk4DnPtI47qYx3MnzEVNfwP4AeZq0XgvloqlPsx3ZCPMeOUwVR0aSD8KpvFaDXMdwNFqrlAH4H4vVXW5qi4t/udlWRn8IS/m1pLaqvqB957xAD6D6drtDeDBJNfHUNWM/oPZWTfCfPGrxfmeWTB96sNC8myBaWjvzfQ6lXD987x13wjzK6jU68Rtym3K7Vny9SlP/2Bu/dgA4K8487fztv8mAOfGyFP842kNgKNKex13sD7nefXcAmDXkr5fvEKIiIgoCk6KTkREFIINJRERUQg2lERERCFCbw85IqsvBzBLyddF76blRnZu09KTjm3K7Vl6uI/ufGJtU55REhERhWBDSUREFIINJRERUQg2lERERCHYUBIREYVgQ0lERBSCDSUREVEINpREREQhEn4eJVEy5t23vx8XVnbvr27QxX/qDsZ2GxGzjDbf2Ufn1RhfxUlr9MSYZKtIRASAZ5RERESh2FASERGFYENJREQUgmOUlDGrP2vnx7/v8VRc7ykImR56Zu8X/PiNvZs4ae98fYgfF874I84aUlkh3bs4y599/Jof7/bclX7c/F6ORZeG7Nq1/HjWU7v6cXCfBIBBy7v78W/92jtphdNnp6l2qcczSiIiohBsKImIiEKw65XSJtjVCgA/7fF2XO97bo3tynl07BF+3KrlCiffV53f9+N+NZY4afefW9+Pd72JXa/lzfJ9ajrL21Dox1UX83GNpa2odTM//q3X834cOVRyX8NJftzt5AOctObseiUiIto5sKEkIiIKwa5XSqlth9mr3L7r9nREaq4fPb7aXgH3/Rl7u9kWL/fD9qsn+nFW5cpOtsHjdvPjW+v/5tajzra460xlz+rdC53lhdvy/bjei2MzXZ0KL6d5M2e59dA/S6kmpYNnlERERCHYUBIREYVgQ0lERBQio2OUqy7a31lucY7t5565vJGTtjXfjmc1fcvGVRducPIVTZ6eyipSkjY0reTHWRG/w4LjkiNPsOOLhXNmxVX2n3fv6Sy/Wfc/gaU8J63ZF/wNWN5ozz38eNTxjzpph/z4bz9ui18zVqeKbP4d9naO7ke7x9mHm4wqcXnVD3Bv71pwuy2//lR7TUGVj8aXuOx049GEiIgoBBtKIiKiEBnter3xhjed5VOrrbYLbULe2MuG87ZtcpKGrOidfMXiNH55Sz+u9p9aTlrOt5Mis1dItV+1l+6fNvFsJ01Wr/PjbUvmlbjsC4/9xlmunpUXIyeVR/90tg/fbpJd1Ulr+l5uZHZKs6mXPOnHBVoYkjM+I7u94b7QzYYfbLQPNRi2/iQnW853pX9s5RklERFRCDaUREREIdhQEhERhcjoGOUTt57pLN+xu22n68xwp51f3Un8uNLua/z44a7vO/keazLOjz/bVN2Pj6vq3kYSZrNu9eNx+dX8uFflAjdj4LPannGJk9T+27g/rsJIxYNZ591vbym6oPb/RaTaKe2uW7Kfk1Ljmxm2HknXgjLhsMvt+PaHG2s7adVH2luIuD3TJ3ekHSvMleyky/t1a5Efzyto4KSdXO0fPz69up228vTXhjr5jm/aHaWNZ5REREQh2FASERGFyGjXa7X3xkUsx85bM8brTzbu5Szf17OVfc8Pdqafh3u1jbteOZtt90C1qfYBwPV+HOHk261SYIagebxcPV3WnGO7W3/qb7tba2W5Tw8Zm2+7hibf587aU2Vd2Zvdg1zZXTo4y4MbvuXHL65zn1ZRuGZtRupU0Ww+qYezfF6Td/04eEtIvLeHdP32Ume5wbf2Fq68tW4Zt/Sy52m/9X0iZpkLb7Ez+DR7YExc9Ug1nlESERGFYENJREQUotw9uHnb0mXOcrURdjl4Yl/tvVUJlb/sQtvt16WS++f5v39sV1Grl+a49Uro0yialXvZK6Aju1uDBoy80I/bf8iu1vJm0RH1YqZNWt8y4pXN6a1MBRLs8r7vUfcK070rbQ3mjFlGcCadQd+f6sedbpzp5Ctctw6xdPjDPiRh/Al2P++Rt8XJ9/llD/vxkZVvdNJaDbaz9mh+PtKFZ5REREQh2FASERGFYENJREQUotyNUaZDTsvmfvzUrU/5ceTMFO8OOdyP6y0ZC0qNrV+741FjOwYfyGzHLrqNHeDk63TdX37M2VrKn3WdC2KmTX5qD2e5Nri/pUpR4NoLd0wytvP/PtpZXn+GfdJL+4X2+oCS7IfBmbsuf9neVjLxksedfE2y7Wf9coGbdur79pigU2YgXXhGSUREFIINJRERUQh2vQKYeU1TP94nz07GPm2re0l63enuQ6MpcTm7tvLje9u+66TVCdwSMilwxXfLe92OncLVq0HlS/4x+/jxR0c+6aTds9JOfl13xFQnrQiUabcu29uP113o3spTuPCPlH5WqxEr/fj2k9wHHDzYeEJKPysRPKMkIiIKwYaSiIgoRIXses0/bh9n+ZfTHgss2Ul8L7vqKidflTGc/SVV2ryzyI/3rBT799q/ApMst59S+l0wlJyFh9pDzu6V3FmXBszbzY8bbnRneKH0CHvm5NS9gs8ITm1X63bEDnnlZLkd7WF1XHy3jRuflPJa+XhGSUREFIINJRERUQg2lERERCEq5Bjl/GPc3wfVxY5L/mvuEX5c9YspTj4FJWP1APtklrsbBWffyXPyDZhnZ0DqdKN9GDdn3yn/GnRd7seF6o5F5XxUJ9PVqZBmXVbVj+N9IHO6zTvF3n7yXgP3WpACzQ7Ebn13udPG6byFiGeUREREIdhQEhERhagwXa9ZNWr48TkHjXbS1hXZB4UuH7yrH+fl83aEZOQ03cVZPmjgOD+unpUXmd03dnpbP26/mtugvMtpbSe9/78Odham/65t7uSrO4wTn2fCoIM+KZXPzWnezFle390eH54775m4yhif795SJFu3JV+xOPCMkoiIKAQbSiIiohBsKImIiEJUmDHKP+7q4sef1nf7w0/841Q/zvsfx8RSZcat7hjUh42jj430/q2vs8xbQnYuf1xix6L2CwxNX/RLbydfc/yeqSpRKZh+d2NnedqRT8X1vhEb6vvxs9e7x4rKMzIzrSjPKImIiEKwoSQiIgqx03a9rj3bffjn1DOe8OO/thU4aRsespct52FJeitWgUw64bGIV6LfElLrcndOjW18IPNOpaj5lqivb15TOerrtPPIHdnEjx9oMiKhMl5edIAfV/6kdJ7gxDNKIiKiEGwoiYiIQuxUXa/BmWCuvn24k5YndlXPnHKOk9bgc17pWpoKGtVylnO3Ni1xGYUrVjrLmp/vx5Jnu3yzG9RHLIUNajvLf1xXKa7P1kL70NmO//7TSStcty6uMnZmz+z7etTXm34e+4G8lD7ZYoc6wh6KvO6s/WKm3X3Pi37cu0r0rvXI8refgD2+7a+HLtpxpjTjGSUREVEINpREREQh2FASERGFKPdjlJJjV6Hbpwv9uG/1VU6+N9Y39ONGt7u/D9L5wE/asc/eG5Z0GQf8+i9neeWymn5cp8F6Px7X/c2kPytM50FXOsu73ljxnoixpU8PZ/nAysFL+sv9Iafce3D4aX58+gWPx8z34yNP+3HYA54L4nyifbwPie767aXOcjv8Et8HpBHPKImIiEKwoSQiIgpR/vtBunXww3sbvhYz29OD7WS6tadUvO6w0nDi9H7O8rdd30vbZ43Z862E3rdJt/pxgcbuhD926rl+vHZy7FtMmo7OzINky7L5J7h9ccFbs+5ZuZsfV/9okpMvzh48StKuw+2tVOPPdmdH6pEX+1aPZEU+dHno0kP8ePXldsL0jnMjbrFKW43ixzNKIiKiEGwoiYiIQrChJCIiClHuxiizO7d3li9++6Oo+ToPu8JZbvXaz2mrE0VX5ai5znKXwfbWCY3zm1ej4z9+XJJbO7qMOs9+1vxqMfPt+t4GuzD+t5j56uCPqDEZ2TXt7Tg39fxfzHxvfn6wH++6jdcKlIbC6bP9+I5rL3TSFvSx4/Szj3k+pZ97+TD3to/m948JLJXtJwbxjJKIiCgEG0oiIqIQ5a7rdebldZzlPlWjP52h2cit7gvKi89LW+tbk+tqOx7d4/8sTE3qs6hkigJPa5m+aRcn7fBFe/txu8HT/LgsXPZf0VX5yH0QcvvASNbB/7LDV7nnLnPyfdHFPp3pyN/P9OOilxs6+dQ+WAetJq9w0srT9ucZJRERUQg2lERERCHKRddrcJLlb/v8JyK1amYrQ0TbCT4oe9beblol/O3H5am7raKr+VbgToGIia9Ohj0mV8OcQMocxFKetz3PKImIiEKwoSQiIgrBhpKIiChEuRijXNwz249b5MQekww+nDl3nXt7CG8OISKiRPCMkoiIKAQbSiIiohDlous1zAOrOvvx2KNa+bEuiT3BNRERUbx4RklERBSCDSUREVEINpREREQhysUY5a4326dOHHvzXiE5l6a/MkREVKHwjJKIiCgEG0oiIqIQonygMRERUUw8oyQiIgrBhpKIiCgEG0oiIqIQbCiJiIhCZLyhFJGXRWSriMyLM397EdkgIoUicmGMPL1EpMjLd3RKK5xiInK4V88iETm8tOuTCiJyl4gUeOtVLc73/OV9D14PyaMislFE7k9dbdMjnvUpL7iPch/13rPT7KMikuete4GI3FfS9yfVUIpIOxHZksDB4WFVbRWlvLoiskJERhe/pqqzVbU6gFE7KHOxqlZX1S+8skREbhOR+SKyTkTeFpGagc9qKiIficg/IrJQRC4NWc8dlXWDiKwUkd9FpGvg9Z4i8mGwLFX9xluf+TtYn4wSkStFZKKI5IvIywkUMdz7+2/0yustIt+LyNpoB1xVbQNgcBzldlPV2wL17OP9nTeIyBgR6RxIExG5T0QWeZ87UkS6RCtURFp4ZQT/qYhc56V3E5Fp3na9JvC+XBEZJyLNE1yfjKpA++itEdtys9fQ1ffSd4Z9tJOIfOd9t/8UkZNLWETkPlpbRF4RkeXev7uCmRPZR0XkoBj71aleetz7aMS6H+KVc1/gtcNEZK6ILBGRMwKv1xaRX0SkRmBd8r1t+kYc67OdZM8onwYwIckygh4CMCNFZfUHcA6AngB2AVAFwJOB9NcBzAXQCMBxAAaLSO+SliUiTQBcAGBXAM8BeNB7PQfAfwBcnaL1SbfFAO4DMCxF5W30yrohReVBRNrBfNEvBVAbwCcAPvb+1gDQF8D5AA4CUBfAWACvRStLVed7B43q3g60G4AiACO8LA8AuB5ANwCDRKSx9/q1AEao6oJUrVeaVYh9VFUHR2zPhwCMVNWVO8M+6tX1IwCfwny3Lwbwuoi0T6LYxwBUBdAKQA8A54jIecnUU1VHRWyH4wFsAPCFlyXufbSYiOQCGAJgXETS4wD6ADgawLMiku29/gCAB1V1fTLrEpRwQykiZwJYA+DbVFRERPYH0BXAS6koD+YP+KKqLlDVDTA7zhkiUlVEqgPoBeB+VS1Q1SkA3oPZgCUqC0ALAL+q6joA38DsjIDZ+T5W1XkpWp+0UtX3VfVDAKtSVN54VX0NwJxUlOc5CsAoVR2tqttgtkNTAId46a0BjFbVOapaCHOg7Ry9qO30B/BjYHu1BvCdqi4C8AeAFiLSAsCpMAeYMq+C7aPBegpMA/yK99LOsI92hPkx8ZiqFqrqdwB+glnPRPWB6TnY5P0NXkQcf98SGgDgveKzWCS2j14H4CsAMyNer6aqv3vfja0A6olIDwCtVfWd1K1Cgg2l1z1yD8wKRKa1EJE13kEl3vKyYX75XgkgVTMgiPcvuJwHoF3g9cj0rogurKw/AewmIrUBHA5gmtctdyaA/0tyHcoMb5seWNrVwPbbIbjd3gbQVsyYWS7MTvoF4tMf9sAKAL8DOFJEmsH84v4LwBMAblTVgoTXIEMq4D4adBDMWWhx78DOsI9KjNeC3ciJ7KOJ/H3jK9icSJwGd78q0T4qIi1hGu97oiQvFzNE0g2mN2g1zFnmwBStgi/RM8p74f0SjEzwurRqq2pJ+vcHAhinqpMSrE80nwO4UERaiUgtADd5r1f1Tsl/AnC7iFQWkb1gzhSqJlDWKgD3A/gOpnvoephugpsAnCwiP3jjLM1SuG4Z523T0TvOmVZfAzhEzIUhlQDcCqAS7HZbAjNONgvAZphunmuiFRQkIsUH1vcCL18P4DIAH3tl9ASwHsAcb3v+ICJ9U7JW6VHR9tGg4rOYDQCwk+yjMwEsB3CDmHHyI2F6Uvy/RwL76BcAbhaRGiLSFqZBiufvG69TAawE8EPgtZLuo08AuL14W0a4FGY7DoU5s74Mpveksoh8KeYaiUOivK/ESvz0EBHZA+ZX2Z6pqICI7AKzE3YvwXuCf7RYp+3DADQHMBJmPf8D09Ww0EvvB/MLeQFM9+AbiZalqm8BeMur23EA8gH8CmAKgC4AToD55XpmvOtY0YjI5zBnAgBwiapuN+iuqjNFZACApwA0gem2mQ67Te8EsA/MtloK4GwA34lIF1XdFPLxA2DGHf3vlar+DeBYr25VAYyB6fp9EsBwAJ8B+F1EvlXVfxJb6/SooPto8edWgTn4nhh8vbzvo6paICInwXz/bgIwEcA7MOuRqIFeeX/ADLm8BeBfsTLHs49GGADgVXXnSY17HxWRPgBqqOrwaIWr6mSY7vnia0X+A2B/mIb5apjrLn4UkZYRdSixRB6z1QumK2q+GQpAdQDZItJZVcOegRVLD5iD3nSvvCoAqojIUgBNvX5shzdI7BORXaPkKYLZKHd6eY4EsMj7V3wgPD5QxpsAxker4I7KCpRRBeYqsWNguo8WqOo6EZkAc/ZDMajqMXHmew/emZ/XlXY+7MUq3WCu7Cs+0L4sIo/DHFwnRisvcGANu4LwDgAvqOoyEdkNwCBVXSsiCwG0RYzvTSnqhQq2jwacAuAfmMZ3O+V5H1XVqbDj8RCRMXC7NUta3j8wP0aKyxuMkL9vvPuoV1ZzmO/hJRFJJdlHDwOwt/c9A4BaAApFZDdVPTEi72Mw++Vmbx+dqKpbve7dBjBn4wlLpKEcCtPPXOx6mJ3ysgTr8Ln3/mJnADgLwInRdsB4iUhdAHVgfol2AvAogHu8nRMi0gnml2s+gNMBHOnlK3FZAYMAvKyqi0VEAXQQkUYAeiO1F7WknJir6nIAZMMcVCsD2OZdNJNIeVkw3aK5ZlEqAyhS1a1J1rM7gMkwV8w9BeATVS0e5J8AoK+IvA1gBcxBIBdmjCqWk2EuePk+xud1htnhe3ovzQVwqIishTnQlqlbCDwVbh8NiHYWE1Se99HdAcyGGTK7HObHy8tJlNcG5ru/BsKVYeUAACAASURBVOZvezECDXGSzgEwRlX/ini9JPvo7fCuUPYMgTlLvDeYSUSOAFBZVT/1XireRxfAjHknfYFiiRtK7/TYP0X2uli2qOoKb7kFTHdY53jGQFQ1H4EnLnsHoAJVTfYpzPVhbh9oDrNBhqjq0ED6UQBug+mT/xXA0cXrEFivY1R1VBxlQUQ6wHzZ9vfWa4mIPAhgGsyvmTNQtg2C98veczaAuwHcBWz394jHwXAbn80wXSK9kqznEJhfpQUA3oW5XaPYQwAawjSk1WB2vlNVdQ0AiMhzAKCqwfvxdnRgfRrAVYEG4RaYLqr7AAxOwfc05SroPgoRaQrgUJhGZDs7wT56DoALYRqWUQCO8LYNgIT20e4wF7/UhmmA+6nqtBTVtT+AR6K8Hvc+6o1T+7d4iMhmABuDQx0ikud9TvAM898wV/DmAbg8mR9zPlXN6D8A/4W5r+avOPO3g/nFswnAuTHyHAxzIF4D4KhMr1MJ1/8wr56bAfQu7fqkaJ0Gwdw3uQbmku143jPL+x4MC8mzBcBaAPeW9jqmYn3Kyz/uo9xHvffsNPsoTKO5xvsb3FnS9/N5lERERCE4KToREVEINpREREQhQi/mOSKrL/tlS8nXRe9Gm4kjadympScd25Tbs/RwH935xNqmPKMkIiIKwYaSiIgoBBtKIiKiEGwoiYiIQrChJCIiCsGGkoiIKAQbSiIiohBsKImIiEKwoSQiIgrBhpKIiCgEG0oiIqIQbCiJiIhCsKEkIiIKwYaSiIgoBBtKIiKiEGwoiYiIQoQ+uLmsKOy9lx9fOfQdJ+3Zdm3T9rnrz9jPWa49eaWt06w/0/a5VHJr+u/vLI978Fk/7vz05X7c4qHxTj7dti29FduJ5bRs7scNh6/x4x8mdXbydXzGphVOm5X+inmyGzRwllcdY48VdYb/4sean5+xOlH5xDNKIiKiEGwoiYiIQpSLrte/j8rz47rZGzL2uUuP2+osF5xjf1fUPT5j1aAYcpru4sf33vFCzHzTr3jGj4954iAnTdevT33FdlI5jRs5y/eMHOHHHXKL/PjQVY2dfIXT/khvxQKC3a39Rv/ipO1X+QM/vuK3S2zCr9PSXq/yLrt+PWd51mMt/LhXO7t9Fx1S4OTbWbq1eUZJREQUgg0lERFRCDaUREREIcrsGKXkVvLjQw+dXCp1qPFrZWf59At+8OPvazdz0grXrM1InchaflRLPz6yakHMfHtNPMOPG2yYndY67WxymjX141rDNzlpu1fK9uMO31zqx+0GuGODmTTjvlZ+fHr1L5y0vR6/0Y93+XVMpqpUbi2/8gA/vvOqV52046p+FfU9J9Xv4yxvW7Q49RUrBTyjJCIiCsGGkoiIKESZ7Xpdf7KdjeeJpk/6cacPr3TytcO4tNUhv446ywPrzPTjkTU6uZnZ9Zp2WVWrOstHDRwd1/vy3q5jF1RjZ6TtrO5pZ9/5sNXTMfN1GrTcjzM515Hu381Z/vP45/34kN/6OmnNh9n9tzC91Sq3stu38eMXrnvcj/eo5DYVRYhuybM1nOUml9hbhbYtWZp8BUsJzyiJiIhCsKEkIiIKwYaSiIgoRJkZo9SeezjLTz80xI9fX2dvA+g4yL28P51jDfsf+XsaS6eSyj/AHRe+r+GLMfNuKrLTD9Z88+e01WlnE3wiCACsOHFLzLx7/9+//bjxgszdbhEclxz0xisx8234zJ1Kr9qqOWmr085ixs12PD94+0+8xnV/01mePdbuh6e8dq2Ttuv9v/px0ZbY37OygGeUREREIdhQEhERhSgzXa+rb3Fn/WiWYy8yv/bfx/lx7upJaa1HThPbXfNSC3dmjwLl74rSNPeU+LuCTvvjpMDSzjE7SCYsGFLdWf6jx8t+PGi5OzzS9CX71I1M3m6xqFc1P+6Z596o0HXMAD9u8SRn39mR7M7tneVvDns8sFTFjx5a5Q57TFxjnx4yvI17nAxqH5hh7b/9nnXSHhp2oh8Xzf07rvqWFh75iYiIQrChJCIiClGqXa+rLtrfj9/d7REn7dW1u/tx7jfp7W4Nmn6PveqvQN0OpQHzDvfjwuUrMlYnMo7bZ0rMtLVFm53lgrvsQ4az2PUaN1VxloP7wLhVrZy07M3LkS5ZNdwZXmbd39mPPzzhUT8uQq6Tr0Xf39JWp53Ryh7uA5lb5djZry5ecLAfL9xvg5Mvq5odKut+qb36+fqL3nHy9athvyMHu8+YwCcj5vvx9OPK9gw+PKMkIiIKwYaSiIgoBBtKIiKiEKU6Rpl10ko/3iUnz0l78c2j/bgZ0nuZd3aXDn78+mH26QP56j4MeP6j9lLqavnpe2oJWfnH7uPHTzX9b8x8CyMeWZH1w6/RM1LC/tfxQ2f5gpG9/Xj++iZ+vPVFd0aceC09yD7Z5dh93Ye1f7zLM4ElOy7Zc/KZTr46+COhz66oCt3DLopgt8HU53fz47oY6+bbuNGPm/zHHp/f6bOPk+9fNT61C+reyrMs345D65b8+CtdCnhGSUREFIINJRERUYiMdr1mN2jgLA9q/1nMvM0GZ25WjZmX1/bjvfPs5fBPr+7s5Ks2gt2tmbZsn9wdZwLQ59OrneV0PtB7Z9bwySrO8vdD7TX9vau4E1e/2OJ7P86Cva2k6NHEHo7tlIHYZby13t76U+/W+B4oTNHVOHVJzLS1R9nu1bovxVfeHS0/jngl9rnYqF87+nH71ePj+4BSwjNKIiKiEGwoiYiIQmS061WqulMzHFV1rR/3mNDfSWuMGRmpEwDUb/VP1NffmLu3mw+zo+aj9Km05+qYaTO22tlBOj6x0knL5CTdO5Oc79xZsIYceKgf33tAKydt4ZG2e/TPPs/58fh8d3afs7+6NK7PbveqvfLxs3eHxcz38PSj/LjplGkx89GOrR/RxH2hiw3P7WyHL37cp4eTbcWedvJ8Pd4eP7vmul2oMwrsnQNdAhOkA8AHxzzpxzftd5FN+HnqjiueYTyjJCIiCsGGkoiIKAQbSiIiohAZHaMs+meNs3zvir38+Kw2E520H5u08eNUzyaf07K5s/zTHm8Hluxvh80/1494J8coM2HL8XY8ZOI+wYe9ug9unlXQ0I8LZ/+V7mpVSNuWLvPjqu8vc9Lav2/jYy/dC7G0R3yX/mftbm8XCN4qAgD3rezqxy2vstc2REzIRCXU+OO5zvLsW7b68Q31pvvxTR+614zEun3njL+Oc5Y3D7S3BJ781kgn7byaC/z4r4H2uNvm5x1UuhTwjJKIiCgEG0oiIqIQme16Xb/eWf5qke1qGbXHm07akk9r2bTn90dJrensdg1Ub2W7a/bbZZ5brxjzeUhiE4xQkjbXt12suZIdM9+Nk07x49Yoe5eUU8nMv9Nu68iuva/utw8Rrr6gDPbNlVORw1oX32BnuHrp/+wDstvnVnPfGJjgvO1X9taOjlfOdLIVbbTdtw9+18dJu+AkO6zy0N62H/+Fbm73bdGUzN0qGAvPKImIiEKwoSQiIgrBhpKIiChEqT64uc7ddkq7Q+76l5P2QdeX/fihO92HhsZjYr47tlUY+E2wd6WtEbkF0bR48jdnmU8myIz8k9ZEfT04ZR0ANHshvieLUNm08mL32oOp+z3tx/O2bXbSqqyI3GcpHaq/a6etOw/X+vE/p7v73pa19onPnW6wt2YVBh7oHKnDzdOd5cPa2WsMvu4ywo/vvNM9f2t6CkodzyiJiIhCsKEkIiIKUapdrxhvuzZrHesmndNroB+vaZeHkqr339jdtYve7+IsT9r35aj5Im9nofTIbt/GWZ64z+vBVD/6fENXJ1/uN+6TLqh82XTEhphpp02+0Flu+P0v6a4ORQh2w1Z/N3a+eJ/UE3k8XfdBYH8OHJIf2n2Ek++ZJr38ONWztMWLZ5REREQh2FASERGFKN2u1xDZI21XS72RqS1787wa7gv7Rs+nPfdwluWnyamtCAEAlvVu6CzHmo3nqe+PcJbbYVzUfFQ+PN/9NWd5SaG9srLe41UzXR3KsAbP28ny9z3mLD8e192dpe2q61v5cZvr2PVKRERU5rChJCIiCsGGkoiIKESZHaNMq4iJeLJi/F7gmGRmbKkbfWYkAJiUb2dk6fTQQieND+0tfxbecoAf98xzb/n4Od+OS2bzdpCdX5G9saTef+y2X/maOyvTjDPtjE193uzvpOmkaWmqnItnlERERCHYUBIREYWomF2vEQ9kjvXgZsqMhocuipn28bo9/bhwxcpMVIfSqN+/vvXjyIczXzDxXD9uCfeBBNn16tqFhvX8sHDGH6mtIJWKrB9+9eNer9zgpE0/33a9rr/f7Zat2dfe6pfOmdR4RklERBSCDSUREVEINpREREQhKuQYZVHl2GOSKwrzM1iTikvy7BNhTtxlSsx8q7ZW92PN57bZmRUV2t/ty688wEk77sJRfvzhnCZ+XBYe6kup1XboAmf5tb6N/fjH3d5z0o7udr4fZ41O3+18PKMkIiIKwYaSiIgoRIXsen396Oec5RlbbVfsv16+0Y9bYEzG6lThFNpZOYbOONBJuvqAeX48ckFbP26KzMzCQaVjxsEv+XHRwe6tI11+tF1sbe/a6MfxPjSYyo9tC9wZuN45+RA/Pueb4U7ayhu2+HHD0emrE88oiYiIQrChJCIiClEhu17vmXuCs7zxmaZ+3GIEu1szQbfZKc1b3bzRSev0wDl+LJMjHrJN5dqXt9lutOm3NHHSxo7r6Mcdhyx20tosneXHhVu2gCqO4OxLZ8w50kn7ZM8X/PiC/S63CT9PTWkdeEZJREQUgg0lERFRCDaUREREISrkGCUOcy8/roaFMTJSJhT+OddZbtG3lCpCaVf5k/F+vOITN60tfvZjPpSbotl0snvb0Lgxu/jx6g7V/LjOz0gpnlESERGFYENJREQUomJ2vRIRUblTuHKVszy0/a5+XAdj0/a5PKMkIiIKwYaSiIgoBBtKIiKiEGwoiYiIQrChJCIiCsGGkoiIKISo6o5zERERVVA8oyQiIgrBhpKIiCgEG0oiIqIQGW8oReRlEdkqIvPizJ8nIhtEpEBE7ouRp5WIqJfv4pRWOMVE5AKvnioibUu7PqkgInd522eDiFTb8TsAEfnL+x68HpJHRWSjiNyfutqmXjzf0bIugf2yvbfOhSJyYYw8vUSkyMt3dEornEE7yfblPprENkyooRSRkSKyxfvgDSIyq4RFPKyqrSLKPFxEfvH+6AtE5HQAUNV8Va0O4I04yq2tqkOj1PdOb4MeHnjtYe9z1onI3yJyW6xCI3b44n8DAumPi8hqERkrIk0Dr/cTkSHBslT1RW99yhQR6SQi34nIWhH5U0ROLmERw1W1uqpu9MqrLSKviMhy799dwcyq2gbA4DjK7aaq/rYRkT4i8ru3DcaISOdA2nMR2yhfRNaHrHNYWYeJyFwRWSIiZwRer+19T2sE1qUk39G0EZG6IvKBtw/9LSJnlbAIZ7/0Di7DvH1kqYhcW5ymqrO9dR61gzIXe9+LL7wym4jIxyKy2NsnWwUzh32ml36YiMwUkU0i8r2ItIz1wWJ+QH/v5Z0Zsf+Xu+0LACJypojM8LbxXyJyUAne7uyjXnl7iciP3j6wTESuKk5L0z7aVUS+FJGVIhJ6JamI1BeRn0RklYis8Y6vPQPpGduGyZxRXun90auraockyoH3h3wTwG0AagHYA8CkZMoMlN0GwGkAlkQkvQigo6rWBHAAgLNE5JSQohYH1re6qr7ild8DQHcAjQGMBnCL93otANcDuCMV65FOIpID4CMAnwKoC+BiAK+LSPskin0MQFUArQD0AHCOiJyXZD3bwXzRLwVQG8AnAD726g9VvTS4jQC8BeDdRMoC8DiAPgCOBvCsiGR7rz8A4EFVjdkAl6KnAWwF0AhAP5h6d0mivLsAtAPQEkBvADdK8meGRQC+AHBqST9TROoDeB/A7TDf04kAhod81lsAfgVQD+bY8p6INPDSyt32FZEjADwE4DwANQAcDGBOEuXVh9kWz8P8jdoC+CrJOu5ovyoA8A6AC+IobgOA8wE0AFAHZt0/KY19tKyMUQ4C8Lyqfq6q21R1lar+laKynwJwE8wBxKeqs4K/rGB24ES6QlsDGK2q+QC+BVA8nf39AB5R1bUJlJlpHQHsAuAxVS1U1e8A/ATgnCTK7ANzhrJJVefB/DA5P8l6HgVglKqOVtVtMDtOUwCHRGYU0710KoBXEiyrmqr+rqpTYL479bwfRa1V9Z0k1yPlAut7u6puUNXRAD5GctuwP4B7VXW1qs4A8F8A5yZTT1VdpqrPAJiQwGeeAmCaqr6rqltgGtVuItIxshDvR95eAO5U1c2qOgLAb7ANdLnavp67Adyjqj+rapGqLlLVRUmUdy2AL1X1De+Ma733N09G6H7lHXdfBDBtRwWp6hYvfxEAAVAI02DW9bJkbBsm01A+4J0+/yQivYpfFJEW3mlyixKUtZ/33t+80+jXRaTujt60IyLSF8BWVf1fjPSbRWQDgIUAqsGc1cbS0OuamCsij4nt558G4CARqQLgMADTRGRvAB1UNay8skRivNbVXzDb9MAkynXKS5BEKTNWuacCWAHgxwTLWi4i3USkG8yPqNUwv2AHJlz79GoPoFBVZwdemwKgC1Dy/VJE6sD8eJoSrbx0iOMzuwTTvB+6f8WoUxcAcyLOKoJllavt650t7Q2ggZihkYUi8pR33CnOU9J9dD8A/3jdo8tF5JMSHrejVhXx76PxFSgyFcAWmB9+L6jqci8pY9sw0YbyJpgzp6YAhsKcDrcBAFWdr6q1VXV+CcprBvPL91SYbpcqAJ5MsG4AABGpDtO/fnWsPKr6IEwXxl4AXgMQ6+xvJkx3cBMAh8J0tT7qlfE7gBEAfgbQAuYX1BAAA0VkoNf//4aI1E5mfdJsJoDlAG4QkVwRORLmF2DV4gzeNh1dgjK/AHCziNQQc9HS+cHyEvQ1gEPEjBlXAnArgEoxyh0A4FWNPaPGjsq6FGY7DoX5bl4G02NQ2Rtj+V5EtjuTLUXVsf33dy3M9zuR/bJ4HD1Ypl9emuzoM0PXMUpZYXnL2/ZtBCAXZhjpIJjj0Z4wvXEAEtpHm8HsJ1fBHLvmwnRXJ6Mk+2hcVHV3ADUBnAUzvFUsY9swoYZSVcd5p+n53ljdTwCOTaIemwG85F0gsAGmgYtZnohME3vBRqzB7LsBvKaqc8M+WI1fvTrcHSPPUlWd7nV3zAVwI8wXtjj9MVXtpqpnADgD5gKHLJixvsMAzABwc1g9SpOqFgA4CcBxAJYCuA5mHGFhEsUOhPmb/gEz/vlWWHki8nlgm/aLUc+ZMDv2UzBjzvUBTI8sV0SawzT0r8b6vB2VpaqTVbWXqu7rvX4+zPfyBZjvyXkAXhORaGfjpWEDzMEkqCaARMdpNgTKiKs8cS+kSuTMZEefWZJ1DM1bDrfvZu//J1V1iaquhPmxnuxx9wNVneB1Zd8N4ADv+ortpHIfLSmvG/YtmB/f3bzXMrYNUzVGqYjefRevqV4Z8X2YapfARRuxrro7DOasbqmILAXQHMA7InJTjPw5ANrEWwVEWV8RaQTgEgD3wHQ1TPUaoQkAdo+z7FKhqlNV9RBVraeqR8H0GIxPorx/VLWfqjZW1S4w37WY5anqMYFtGvPKNFV9T1W7qmo9AHfCXPQROd7VH8AYVQ290CHOsgBzYdIgVd0MYDcAE71x11yYCw3KgtkAcryLKYp1QxxjQdGo6mqYA123eMtT92K3kvQoxfuZ04Jp3vBHmxh1mgZgVwlc+RhS/zK/fb2/zUKU4DgZh8jjbnEc9Vie4n00Ubmw14EEpXUblrihFHPp7VEiUllEcrxfFgcD+DKJerwE4DwR2VVEqsJ07X6aRHmAaSi7wnRR7AFgMUwj9rSIZInIJSJSR4weAK6AOW3fjteN0MLL2xzAgzBnSZEehbl4YBNMN8Y+XhdwLyRxdVomiMju3jatKiLXw3Qzv5xEeW1EpJ6IZIvIMTBn10nfgyYi3b0yG8BcrfeJ9ys2qD/iqHs8ZYm50rCyqhZ/H+cCOFTM1aR5AFYlt0ap4Y3XvQ/gHhGpJuYy+hNhhhQS9SqAQd5+0hHARUjiO1FMRCrD/O0AIM9bjuczPwDQVURO9d5zB8yP0cjtD2+sdjKAO73v9ckwP1ZHRNSlXGxfz0sA/i0iDcWM516N5I6TLwE4WUT2EJFcmKuJR6vqmmQqGbZfecfQyjDdsfC2TV6McvYTkQNFpJKIVPFOchoBGBeRL/3bUFVL9A+mdZ4A04WxBmZs7ohAeguYbo8WMd7/MoD7orx+N8zFFytgdu468bzPS2sF82soJ6Te8wAc7sVZMGNo/3h1nQ3Tly6B/BsAHOTF1wJYBGATgAUw46c1IsrvDeCziNcehxlg/hlAs4g0BdC2pH//dP0D8IhX1w0APo+sW/DvEeW9dwF4PeK102F+nGyCOWAdFc/7dvQ3ghmjWO9tu+dhrnwLpu8PYGPk9vHSPgdwawnKyvPq3jLw2mHed2kJgDPj/Y5maBvWBfCht/7zAZwVSCvxfumt/zAA6wAsA3BtlPeNBHBhjDJ7AVgYY7s6/+L9TACHw4ypb/Y+u1Ug7TkAzwWWW3l5NgOYBW//L8fbNxfAMzDH3aUAnoBpIBLaR73XL4M5tq2GuZWjeTzvi9iWce+jsMfq4L95gXR/H4UZPpkSKOsHAAeXxjYsjY39X2+D/hVn/jzvi7ER5mwtWp6WMFdFrQFwUWl9keNcn/O8em4BsGtp1ydF6zTI2z5rENHYhLxnlvc9GBaSZwvMBRj3lvY67mBddvgdLev/Etgv23nrvAnAuTHyHAzTSK1BlB9K5eXfTrJ9uY8msQ35mC0iIqIQZWXCASIiojKJDSUREVEINpREREQhcsISj8jqywHMUvJ10btpudGZ27T0pGObcnuWHu6jO59Y25RnlERERCHYUBIREYVgQ0lERBSCDSUREVEINpREREQh2FASERGFYENJREQUgg0lERFRiNAJB4iIqGLKqlrVj7uPWe+k3dlgsh8fOf0UP650xN/pr1gp4BklERFRCDaUREREIdhQEhERheAYJYCcxo38eGu7XeJ6T+7sRc7yrFt29ePa0+28unVnbHHyZY36NZEqEpUbW/r0cJarfP6LH+venf147gnVnHwHHfqbH4/6breY5TcZW+jHlT8Zn3A9aXvBccnZQzv48YcNhjr5igLxgilN/LgNOEZJRERU4bChJCIiClFhul7Xnr2fH6861u0OvXnPL/y4f83/xVXei2tbOMun1PjAj+v0rRzzfcc37R5X+URlXXb9en5cOLyKH7/d7lEn37LCXD+ulTXSj1vkVEVMA36MmbT87E1+vPiJSk7aJYOv8uN6/x0bu3yKas5t3fx4eu8n/LjfnGOcfKvub+3Hbb74Of0VK2U8oyQiIgrBhpKIiChEue96zerWyY9n/tteRTfqyMedfA2yJ9j3pOD3wQW15ke8Eru7lWhnNHuIHX6Y1fHFQIrbpdow28bPrGnvx7+sd4cvFm6sHfOzssVeZ/lZh0+ilg0Awwc94seXzrjSScsaPRkUbmvDbVFfnzqqnbPc+ouK1a3NM0oiIqIQbCiJiIhCsKEkIiIKUe7HKDe2ruHHs495NpBSZfvMSXpujZ19542/90mojFr4M1XVqRCy9rAzuWxp7M7kMu8kOwPSaT0mOGkFagevvn/NzhTT5Ie1Tj79dVpK6lkR6P7dnOXhBzwfWLKHki82u2OUD94wwI9rTFtpE1b84+TLWr0g9mdn2e3Z/j+X+/H005908rXJre7Hmwetc9JqnWtn4Nq2dFnMz6rIcqtv9eP1RTZu8XV+aVSnzOAZJRERUQg2lERERCHKTNdrTrOmzvKMm5r5caMxtout5lvuLBBZ+erHswtsV8GCbe6l5s1z1vjxub8PcNJWz7AzjDSaYMurPcbtCtING/y41hp2oaaK9tzDWZ5zhY3f3P+/fty9UsS9APG6wU6cvfn6rU7S0DW2a/eZKYc4ae0umOHHRVvc2ZwqooJa7iw4e1Syh48i2P3mhpfOd/I1/2CMHxciQUX2nW2vsceATpXcW0CmnjjEj3/Y7T0nrefhtsu21uvsegWA7LatneVpBw/z46sWH2bzff8LKjKeURIREYVgQ0lERBSCDSUREVGIUh2jzK5dy497fDbXSfuw/sd+3HOiOw4RlPe5vS3ghuPO9ePCabPcz+pkp2CqO+svJ61u0eyoZUefzIkSVXSgHYucZ4eL8FnPp518bXKCt/bYccmvN7u3/Nw6/SQ/XjPfHZP+/SR728Dty+yTYx5uPNHJ162KfdDsoz2GO2m3XHOuHzd7YAwqusLKEjNt9zHn+nGL+zP3t2p3xThn+dPD7UOE+1Zf5aStOWGjH9d6Pb31Ki9m3RV72sBMyj/G3m63vnnsZqnBJPeWH52Umdu7eEZJREQUgg0lERFRiIx2vWZVdp+wkf+e7Xq9tf53TlqH923fXMcP7Ol12OXlkd2tTtqMP+KsJaXKnDfd2z7eiHmrh9ul+q+5R/jxhJn28vWOV81w8jXYaLd3g4jPvrT74X68fGBLP77mWfcWk0GNRvrxqM1NnLTJV9ru25NeP9GPty1YiIqowy2xu7myJ9WImZZJt02w3fF9e7/opF3RxT4M+lPUyVidyrLH9h0eM+2nN/fy48ZIvjv9rzf2dJaH7PuWH+9WabQfN8rOi1nGnwXugNiJ713jx22uT98DpHlGSUREFIINJRERUYi0d71m17FdHDPvbe+kzer0jB9Piphzt+M9c/y4cJ17pROVHVnV3InK/7hnNz+ecYh7NWtW4ArWCYEZlfp9dIWTr8Pdtou1/Rp7lWoR4rdbjUV+/HWO7b6d+Eh3J1+9R+1VkydVWwNX7Ks8K4qs3Tv6ca/aXztpswvswNrNaAAAIABJREFUbEX1pxZkrE5h6vwQGN7pXXr1KMuya9b042pZ7oH3q812f278WHzdrZJrZ2za2nt3J+22Z1/y44MrT3LScsUeD8bn2+7W/jP7Ovmubf2VH59QbZOT9sxJtnv98WEn+3Hh9Oh3MiSKZ5REREQh2FASERGFYENJREQUIu1jlIvP7uTHs052H7L68UY7fvni8Uc4aYUr3NlzqGxac8JuzvJ3ff/Pj7PgPsD32812HOLBy+0TXNp+5V7WHe8TJiTHfn2zOrRx0l74sK4fP/LqK368W6XlEaXYOmaL+7txt3Fn+XHT5RXz+/jHADtzy5nVVzhpB049x49r/s99cDaVXXOv7urHB1b+1knr/H1/P26LX2OWEXzqyKwr7AOxIx+kHfTt5urO8uVfnuvHHYfYB3rnzXb3tadhr2158tvmTtqnHd/34wda2NsNK02PWY2E8IySiIgoBBtKIiKiEGnvel2/7+aYaUPm2geDVpldMbu2yjuNeJbyFo19S8X6IjsDz9J97SXlm0/p4eRr225J1Pev3eLO7NS3pX2Y7BW1X3PSJm615ffMC95Y4nYHB/20xb0Bpel9dl00Pz8ye4VwzTGf+XHwdhAAqPR0vcAS99/yQnaPfbtd7l9VYqYFBSdTn9nb3gYWeQtXvznH+PG6G5s6ae3G2luz4h1u+XNOY/eFjtHzpRrPKImIiEKwoSQiIgqR9q7Xt3oODSy57fJ7ne1D4fZ/9DonrfXHW/04e+QvoLKpzkfuRNkX9+/nx693dB/6d0I1OxvPqZfZWZkKNfacO/lqJ0HOk7Cvq5vmdrda2yI6eXpNPdOP617hpumczDzrrrx4ftXBznLlT8eXUk0oGR0bLivxe6R7F2f5gwOfDSzl+lGXkRc7+dpdYGfZki1TSvy5O3LHcvscy8ojf/PjksziFQ+eURIREYVgQ0lERBSCDSUREVGItI9R9siz/dcF6o4B1cmyl/vPPMN90kTB6TZv128v9eNaE9xbBDY0s+NeNe0DR1B/6saYdVq5u/vEi0Yj7WwthbxNpUSK1q93lvOOtMsXNzrFSZtxVys/PrK7HU+Yvbahk+/vRfX9OLuS/R6c0GGqk+/hxhNRUp2/d8dQOlxnnzKybVnkrD0VT3btWs5yjayK+ZDqnVmzqvYpOVmR50qiiGb2QPdhyp1y7XG9+4Sz/bhNP3c2n1SPFeZW3+osb9xm61W0ZUtk9pThGSUREVEINpREREQh0t712vqTi/x49vHPxf2+4EM9Zx3+X5tweEqq5Rh/s52B5erpgdsFjk/twz8rmsKIrsz2l9nleYHXK+FvJ1+7iOViX33Q2VkO63qdt80+4PWkJ2+0ZT/u3tJQuG0byFp4gXsbQL8a3/vxLxtbZbg2JZd/7NqYaZuKKsVMq0iK1J4fFUV2jsaYWatJI/eh5sH3dW5gbzdZnYL6RQpOwD7t4GFO2sFTT/fjmmmcHYpnlERERCHYUBIREYVgQ0lERBQi7WOUHa6wlwsf9a57aX7/pz7x46pZ7tMZjq9qHxIbHK9Mhx559pLo0Xu+4cddHhno5Gtzw9i01oO2N3fw/n78yz6PRaTGHnM67WE7LrnL02P8OPrF71RebTu0u7P89p5PBZbcWxo+eMg+ragW3IeFU7jaF7i3XowbZW8PeaqFPY7v/9D1Tr72T9jrDbYtWpzQZ3cabstYVug+jarykLqBJY5REhERlQo2lERERCHS3vWqgcvvc7+Z5KS91XGXmO974jR7m0Zhrr1k+YDr3cv7H2w8IdkqOoIzVTTrFv0BwpRei284wI+/7PewH1eR2A9dHrK6rbPc+KXJfpzq2UGodAW7W/+5yp2Bq2Ou7W69fFFPJ632cPsUoorUBR+8vQIADq71XYnLiOw2fejwk/y42wg7JdrvZz/h5Lv8kN5+vOS4uk5a4ap//HjNOXaI5cCrxzn57mj0kx93f9vt2m3zRWa60HlGSUREFIINJRERUYi0d70mqtp746K+/km3/Z3lB8+xXa+b1E6Y2/3Hy5x8LV+wV86uHLjJSZu4j/uAYcqsgiP3dpY/vNJ2t7bIid3dOj8w+87HNx3mpOVtSm2XfEVRc5774ILgDEelSXLsoWrNNXbi/Yl7ve3k+3pzFT+efbs7y1ClgpJPor8zKPxzrrP89tIefnxymy+ctJYHzvfj7Jo1bRnr1jn5ts2Z58eT9rTnWwef494pUHeqndFH6hc4aXOfau7H0w62VytHXtka7G5tc33pXK3MM0oiIqIQbCiJiIhCsKEkIiIKUWbHKGNp8aU7gw/OsWFVsTO1zDjkRTdbyyP8+H+tvowoNfrvhflL3cuZ2znPvKBUmXe8O/NSqxjjkksK3fGy/ldf58dVP4s+pk0lU22E+3f84t5Oftym8gon7Y9mXf1428JFSFbRgXv48dzL3bRTO9nbfQY3dMclgwZfP8CPq3w5Pma+imzLhXbs8dERHZ20Tzt+5MdXfWtvrxn/nHttSPXF0Z+6s2If92asfQbaW0f+s8toJy14K97Qta38+OX/O97J12ZY6c+IxjNKIiKiEGwoiYiIQpS7rtfciX84y/v98i8//nmvt2K+77VWXweW3N8H+WovWz4+8ODmjgPdSXbdC+cpGdn1bLf2r6c8HpGah2h6jb7SWW7zAbtbM+ny2u5tBss+tV14E/9pkXT5D7Ye6sd7VIp9aJq01e6J54y/wElr891MP+b+Gl3hbHtc+/FE9xaaOp/ZmY4e22WUTbhnFGIJdqFu9yDoEF1Hn+fHba9d6cd1F5V+V2sknlESERGFYENJREQUgg0lERFRiHI3Rlm0fr2z3Pjfdfy4z7AT/PjWVp85+fbPsyMWIzbUd9Ju+98Zftz2GjtFEsc4Uiu7jt1WV4+zYx7VJfqYJAA8tMrentDuInd8mk8FSb/gpfrLr/rRSbu7wRS7EIwTZg9H2yL2vil2dkqcPdxOk9b6Znc8i/tsyQSnogOAD3vZW36eOM8+IWRja3f6uS+PttcVHPXl1TYh5LEsHV5wH/7casJUW494KluKeEZJREQUgg0lERFRiHLX9Rpp2zw72z0OteHAge7UHuv3sTPSdxy00klr+3fpzEhf0aw8wc4CcmTV7/24MKS75n939/Ljaht5O0im1Q3MijLhx/ZO2qMf2q60a+u43eKJ6PjD+X5c6Td3dqZmD4zx49Yoe7cP7CwKly3346YPLo+Z79+ws/a0R3xP6inPD8vmGSUREVEINpREREQhyn3XayyNnhjjLgfisn6F1c7q1Ou/8eNCjX3NattPLvXj9iPY3VpWRD4A+JuuNWyMvZIuf1dM3nEmolLAM0oiIqIQbCiJiIhCsKEkIiIKsdOOUVLZ062KvZUnW+xvtJ+3uPOpdH7YXpbO8WQiKm08oyQiIgrBhpKIiCgEu14pY65+wz5kd+ZFz/jx+cP+7eRrPse9tYeIqDTxjJKIiCgEG0oiIqIQbCiJiIhCcIySMqblnXbs8ag79/Dj5uCYJBGVXTyjJCIiCsGGkoiIKISolufHaRIREaUXzyiJiIhCsKEkIiIKwYaSiIgoBBtKIiKiEBlvKEXkLhEpEJENIlItzvf8JSJbReT1kDwqIhtF5P7U1TY9ROQ7EdkiIqNLuy6pICIve9tnXpz523vbv1BELoyRp5eIFHn5jk5phVNMRA736lkkIoeXdn1KivtkuJ1hf+U+KnlePQtE5L6Svj+hhlJEOnlfnrUi8qeInFzCIoaranVV3eiVV1tEXhGR5d6/u4KZVbUNgMFxlNtNVW8L1LOPiPzu/YHGiEjnQJqIyH0isshbj5Ei0iVknfcQkVFe3oUickcgrbmI/Cwi/4jIfyLe94WI7B2xPocCuDSO9ckYEakrIh94B7a/ReSsEhbxsKq2CpSXJyLDRGSdiCwVkWuL01R1tqpWBzBqB2Uu9r4nX3hliojcJiLzvXLfFpGagc9sKiIfedthoYjE/BvHUdYNIrLS+/50DbzeU0Q+DJalqt946zMfpURErhSRiSKSLyIvJ1BE5D7ZW0S+977v8yIzJ7FPDhWRWd4B9two63GN931Z631/8gJprbw6bRKRmWE/SsK+f+V1f/WOUVu849kGEZlVwiIi99HixnND4F82kNZ9tK6IDPf2rZUi8kYwPco6ny4iM0RkvYhMF5GTAmmHichcEVkiImcEXq8tIr+ISI3i11Q131ufN+L/c1klbihFJAfARwA+BVAXwMUAXheR9olUwPMYgKoAWgHoAeAcETkvifIgIu1g/iiXAqgN4BMAH3v1B4C+AM7///buPEyK4u4D+Ldg2V0WEGEjixzLKZdyg4qGUwzoKwgJRhE0GJWgqIkg0SiGFc2riUlEES8EFW9RF8Q3XhGIEkEOkUvQyCUoAkGW5RLY3d/7R/VWdw0ztbMzs7uz8P08Dw+/nqqp6dnumuqu6u4C0BP6eywG8LyjyJcAfOTl7Q3gBqXUYC/tDwCeA9AMwJDiiuZtvE0isjye71JOpgE4CiALwAgAjyvHgUMUcgCcAaAJgL4Afq/iP+q8GsBVAM4H0ABAdQBTA+kvANgM/R3+B8D/KqX6lrYspdTpAK4F0BzAEwAe8F5PAfA3AL+L83uUhe8A3AdgZoLKO+iVNSFB5RVbBeBGAJ+FJiilBgC4A8AF0L8FzQHcE8jyMoCVADIB3AXgdaXUaRE+JweR97/KXF9v8hqmmiLSOgHl/SVQXk0RKSz5LU4l1dH7ANSB3rYtoOtqTriClFINoev0OACnQO+LLyml6nlZpgAYBGAg9O9VVe/1+wE8ICL74/wuRixnlG2g/wAPiUihiMwH8G/oP06sBkFvsEMisgXADOhGLB4DAHwsIotEpADAnwE0hG7kAF1JFonIJm/neAFAu/BFAdAV90XvO28EsAhAcUPSDMB8EdkHYBmA5t5R0h0A7ozze5Q5pbvbfgHgbhE5ICKLALyF+Lbp1QDuFZG9IrIewHQAo+Jc1UEAZojINhE5AL1NL1dKZSilagLoA+BPInJMRFYBeB2R96OIZQHIBrBSRPIB/BO6UgO6gXzL20eTioi8KSJzAOxJUHlLReR5AJsSUV6g3Gki8iGAH8Mk/wp6m6wTkb0A7oW3z3gH4l0ATBKRwyLyBoA10PttOK79r1LX1yTnqleA/tvPEZF87++fC/93NFQjAHki8o5o/wd9ANfCS68hImu9un4UQKZS6mwAzUTktUR+qVgaShXhtWD3VJ5S6qdxlGuVFyMVpsxgua8AaKl0X3w16Er6rqO8KQCuVkpVU0q1BtAD+kcUANYCuFApdSqAbgC+gK7kU0QkL87vUR5aASgUka8Cr62CtwMrpbK9bZodTWFKqTrQB1OrwpUXh3DbNA36zEEFXgumR9qPXGV9DaC9tz37A1inlGoM4AoAf43zO1SIGOtkeTsTx+8zWUqpTC9tU8hZQth9Kor9rzLX1/u9Lst/K6X6FL9Y2joacKPXBb1CKRXpoKM0XPUK0D1Xlyil6njb6RcA3olQ1nIA65VSg5VSVb1u1yMAVnvpu5RSHZVSHQEUAdgL/Tt9SwK+hyWWhnIDgF0AJniNxs+gz9KKjxggIqd6ZyXRehfAHUqpWkqpltBnARklvKckHwDorfSAcyr0kWJqoNwd0P3vXwI4DN0Ve6ujvLcBDPPyboA+alrmpd0P3YX7L+gdoRqADgDmKaVeUkp9pJS6Kc7vU5ZqAtgX8to+ALUAQES+8bZptGNwNQNlHFdeHN4BcJ03VlUbwO3e6xneD+i/AdytlEpXSnWBroSR9iNXWXsA/AnAfOgu3NsAPOzlGaqU+pfSY6GN4vw+5SaGOlkRQvfD4rhWmLTi9HD7VEn7X2Wtr7dD9240BPAU9Pq2AGKqowDwCHQDVg/A3QCeVUqdH+c6RqxX3v+fQf8O7/H+FQJ47LhSAHg9fbOgh72OeP//pngcHXpY7WHov8VVAG4A8CGAdKXUe0qPZ/c+vuTSK3VDKSLHAAyB/gH5HsB4AK8B2B7HetwC3QD9B3r882VXeUqpdwKDzyMirOcG6LPER6EbxZ9AHzkWlzsJQHcAjQGkQ4+FzA90EQQ/ry50Yz7Zy9sYwACl1I3eZ/0gIpeLSEfoDTcVwM3QXTlroc9KxqjAxURJ5gD0GEDQKQBi7eM/ECgjqvKUfUFBpKPimdD7xkIA6wAs8F4v3qYjoLt2tgF4HHqMOtJ+5CxLRF4WkS4ichH0WekR6PGxv0J3L81GJT27LAvR1MkohO6HxfH+MGnF6eH2Kef+V1nrq4h8KiL7vQtTnoM+MLw4jvI+E5E9IlIgIv+Ari8/j5Q/QXV0NoCvoA9aTgGwEXrYK9zn9QfwF+ghlVToE7KnlVKdvPX/XET6iMg50L/tv4a+wOxp6N/zawA8r5QK1wtaKjFd9Soiq0Wkt4hkisgA6KOcpbGuhLfjjhCR+iJyprdeEcsTkYsCg88Rr2ISkddF5CwRyYRuGJtAj0kAQEfoK/22ezvKs9CDzOEqR3PorslZXt7t0F234XbS0QCWiMhaAO0BLBeRo9DjKfF2J5eVrwCkeBdAFesIvaOXmje+tMMrI6ryQi4oCHtULCJFIjJJRJqKSCOvvG+9fxCRrSJyiYic5lWeTETYj0oqq5hSqjp05RsPffS9zRu7XAZ9FkKIvk6WYB2O32d2emf466DHEmuFpB+3T5Vy/6uM9bWYIPxQWJmUl4g6Cr0dnhSRg94Y5hOI3Nh3AvCRiCz3yl0G4FPoA5lQDwGYKCKH4W/HLdC9BZEu+IparLeHdPC6tzKUUrcBOB3As7GuhFKqhVIq0+uHvgh65y31vS5hyu3qlXkagCcBzPPONAH9Q3eZUipLKVVFKXUV9B/16zBFfaWLU1d6eesDuBz2GAi8q7HGwr+KazOAvt6FJt2Q4AsjEsXryngTwGSlVA2v++VSuK8CLsksABO9sYg2AK5HHPsIYC4tb6G0dgD+DmCyiBR56W297vtUpdRIAD/z8pS6rICJAJ4Vke+gb/9orZTKgr6SMmm2p1IqRSmVDqAqgKpe/Yx5vllvP0+HrhPKKy81AeuZ6pWrAFTzyi3+HZoF4FqlVDtv/GoivH3GGz//HMAk7z1DoQ9U3ojwUSXuf5Wpvip9y8OA4u3qnbX3AvBeHGUOU0rV9Lb1zwCMhL6IL571LKleLYPumq3uHYSORsjvaMAyAD2LzyCVUp2hu8xXBzMppS4EkC4ib3svbQbQT+mr9tOQiAvcRKTU/wA8CD1wegC6T7plSPoBAD0jvDcHwAshr/0S+vL2Q9CVYUA07wtJlzDrsQi6u+UH6IayRiAtHXp8YgeAfOi+84GB9CcAPBFY7ge94fZBdzlPhx7PCn7eLACXBZYbQx8B7QXwt5C8o6Cvuo1pGyT6H/RtL3Ogryr7BsCVgbRsb5tmR3jvswDuC3ktDbobJh/ATgDjwrxvIYDrIpTZB8D2kNdaQY8pHwKwNbRM6KtSd3vfYRGAbpH2y5LK8vK09rZ5SuC1CQD+C93V0z4k/xYA/Sto++V4dSD4Lyfcd4/w3tA62SdMeQtLel9Ierg6uTBMuX0C6eO8/SUfwDMA0gJpTb33H/a2Xf9A2ggA60q5/1Wa+gp9VrQM+vcsD8ASABcG0mOpox9D/57lQzdWV4R530Ikto42g75Vbw/07/K7AM4IpK8DMCKwfBP0yct+6AOX8SHlpUG3GU0Cr10AXRd3hH6ncH+HqP7+FbDBJ0L/kOUh0HCV8J4vvZ1gpiPPj95Gv7eiduZS/A0+8Db8hxW9Lgn6PtO97bMxyvxneNv/EIBREfL08n4Q8xDmwCmZ/nkVM89b374VvT4xrP9JXydL+K6Vvr6yjiLNW8+D0LcYler9nI+SiIjIgQ9FJyIicmBDSURE5OC8Ku7CKpexX7aCfFA0O5GXfRvcphWnLLYpt2fFYR098UTapjyjJCIicmBDSURE5MCGkoiIyIENJRERkQMbSiIiIgc2lERERA5sKImIiBzYUBIRETmwoSQiInJgQ0lEROTAhpKIiMiBDSUREZEDG0oiIiIH5+whRESJ9PVD55p44+VPWGlXb+1l4p098sttnaj0Cvp1NfHmoX4zMv6Cf1j5RtfeYuIqsCfmKII/ScqkXZ1NPG/LWVa+BvdX9ReWrolpfePFM0oiIiIHNpREREQO7HqlpJNSP8vE+85vauJvL7Tns908+CkTH5NCK+38z68w8e5tdUzc7oHvrXwFW76Ja12pdM4/94uIabOafGTinkN/Y6Vl5H5aZut0Mvv29vOs5YNnHDXx8K5LI77vnnp+3StCkYmrhJx7BdPaLhxtpdV7K83EtV5dYuIGiLyPVBSeURIRETmwoSQiInJg1ytVCJXmd7tsuqeLlfbosKdN3Lv6oYhlHBP/OC/YxQMAH3d6yV/oFAgzf23ly74sqtWlBAl2r7p818u+QrJlblmsDa265VFrOXgl6s7CwyZ+bI/dRdvqHb9rvMZ/Uk2c/l97eCRzxmITt8DK+Fa2AvGMkoiIyIENJRERkQMbSiIiIodKP0ZZ2Mcf30r5404Tz2v9lpWvmvKf7uC6lSDzrmomVlu+tfLtGdTOxHXnrLXSivbvL81qn/S+meA/2WPNVQ/HVMY1Wy8w8YwmH0T1ns/Pm2ktD0b3mD6bylbLW5eUnIni1mvNMGt5fvtXTRwcl1zR2T6naoXlZbtiSYZnlERERA5sKImIiBwqRddr8FaC/YM7WWmT7ve70oK3Etg3CwDHAlctu24l6HL3KBN3rG8fR8xt6l9K3f3Um620rKmfhF95MqRHRxPP/PXUUr+/wzO3WMvN7v3MxG0eGmulbbh0WqnLJzrZnHr9UWv57Q8zTTzk1BUm/rztlVa+wvX/KdsVSzI8oyQiInJgQ0lEROTAhpKIiMihUoxRHunT3sTzpzwaMd+CwzVN/Mf77EeVVTskodmN/Cb+8UJq4Ilpv7/NvpVgX1GBiWvusG8xoeMFxyQBQO77wcRd/WHn48aTcw/UM/HMUYNN3PRTezYDKfK3QetbV1lpF825wcT3PuHPdNAtzd5u/df6t/X886xaoV+BEqzFq2NMHDpxc1BwgmeAt4uUlYJt263lO3JHmPiLkf5v7dH6dt2our5s1yvZ8IySiIjIgQ0lERGRQ9J2vQa77e5//MmI+YZvvNjE+ZMam7jOgsXhsodVu2UzE3eavdHEbVPt44g2c281cavXOZFsSXZ1r2EtL2vjd2UHn5S0r8i+RH3Sa/6Tkpoujm47ypEj1nK19/0nh4x8z+/uWzfI7rqfUNff3tNf/pWV1my43Z1L8XN1t1ISCEzaUiWwsOfMdCtbXdUV0Uhb7t9GUpifH9+6VSCeURIRETmwoSQiInJI2q7XvXf5k4YGr5C8eMPPrXxVbzvFj1d+hljkdc0y8aR6r0XM1/j9mIo/aVXpv8daDj4RKfikpGs2DbbyNb07+m7zaLS6wb9adupPz7TSxtXdYOIR7ZZZaZ8gFUQnspTGjazlB4a8aOLgJM5L/mBPXFAF4SdNrxJy7tVnjT8z+pHZdt0LTuqc7HhGSURE5MCGkoiIyIENJRERkUPSjFFufqWDtbyu8zMm3l7gj1dWuauOlU9Wri71ZwVnIwGAlr/7wi8/cOwQnBgYAKrPsZ8MQ8dLadjAxONb/zOq92yafYa1nIXdCV2noJlz+1vL467ZECEn0YkpOC558Xv2LVCDa+w18aRdnU08b8tZVj5ZcmrYsgdfschaHtfc/w0YMjnPSiua7I+BDrxqtImDt5QAyXFbCc8oiYiIHNhQEhEROSRN1+vV7exuzeAlx1sL/FtAsKT0Xa2A3d365RT7Yd1zs/1JfoMP6N76YGsrXwb4NJ6S7P1ptomH1ZwbMd/obX1M3DDwNCQAKEDFOKu6/YDopc37mbhg05ZyXhuisnGgkz88Mrq2XUd7rf6liU+5yK+XDfAForHiz/a516pGPU088bomVtq5A9eY+N3n/YkLpuW1sPK9c41fBpauQUXgGSUREZEDG0oiIiKHpOl6TbSqZ9rdputvrm3iDYOmhWY3gnNa1vpks5XGGShLtruLKjkTgI0PtDVx9e+T42riS2rYTxL6e7f6Jq7Jrtdyxfkny076PL++XTLPfrj5KdgYmj0uBdu/NXF2zrdW2nc5ftz59ptNHHrl7L2v+pMp/OHaMVZayvwVCVjLkvGMkoiIyIENJRERkQMbSiIiIoekGaN8Y3Mna3lCpn8ZcOe0gybuufrHqMo7O+NNa7lvdf99RaGZA8avGmbiRjvXRfVZ5CvMiDyTQFCyPOUoOIF0cEYTIio/Df/8iYlXvdjYSjv9vX0mnvz0dCvtt38aa+KynI2EZ5REREQObCiJiIgckqbrtf5I+9LhwXOGmvjtNv7TI4JdsqXRM3D5cdFw+zaAjzu9ZOJ60zNiKp+0Dh22mLjI2cmdHI6Jf9NPZVhfohNd8JYSAJh95wAT78ixbxt6bOIjJv5V49+aODvnEyQSzyiJiIgc2FASERE5sKEkIiJySJoxyqL9++0XLvCX+w290cS7ukZu2+us96/vr/2i3Ze9+/kjJt7Q6RUrbca+pibOWLfDxBU1iwVVjK0FR63l6ruPRshJROWl+lz/VrJVKyLfOvL59Q+beHBO94SuA88oiYiIHNhQEhEROSRN16tLRq4/YXLT3NjK2NDvaROH3gYw7cveJm6wLboJSqlyum7I+xHTLn1mgrWcvSCxl5gTcPXWXiae1eSjiPm+fuhca5mziRBw/K0jj6zqa+IxvTeV2efyjJKIiMiBDSUREZFDpeh6jUXoxM2AP8Fn6NWNWY+kl8ManRwO/rGBiZc/U9VK65bmPwXnm9ntTZx9WWxPW4pF9+r2ZNxLj/gTTTd9cJWVxuf0ECWZs9tbi8+fO8PE0/JalNnH8oySiIjIgQ0lERGRAxtKIiIihxN2jHLTpNSIaZfuvcXVAAADuUlEQVStvM5arr/gs7JenZNGlX+tNPHYKTdZactun2riD8553MSj+t5i5aua4O2x+ZUOJj4/fYWVdt7K4Saue/CrhH4uaYeGnmPiWU2erMA1oVBb7znPWk7/rx9nTU2O26Oqtmtl4vzJB620RimHTfzuqJ6BlMRe98AzSiIiIgc2lERERA4nVNer9Oho4rfOeSwk1b8FRH1Yp5zW6OR2+sIfrOVu/UaaeHn3F0y8vY99e06TBfF/9sFf+N19r53jT+66+Eiala/ufbw1qKw1+/36il4FCthzbQ8Tr7luqpXWdqE/LJVlJ8UtpXEja3nrldlh8zW/2H7Czp2NXzbxksP2LSBDc/ynadVdtjjeVYyIZ5REREQObCiJiIgc2FASERE5nFBjlLu61zBxsxR77Ck4Y0jKjwIqe0WrN1jLDe/yHyuYm1vXxG+NetDKN/An40x8xthPEYnqeqaJd/aobaU9Od6fxLVtqn882GbeaCtfqyVLQYkVvB0EiP6WkJ5jf2PilrmcLaQ8VFP2YybX9/FnWVq52f/NvHLx9VY+FYh7Nf/axF/m1bPyLWg/28RVYN/2VQQJpPklPpbXzMo3fL6/X7TL2WGl1d1eduOSQTyjJCIicmBDSURE5HBCdb3++BP/VD50cuYpP7Qzceb08jldJ1vhui9N/NxAf8LVJ5+yt9W7l/zdxK/17GriV17qZ+V7erR//XrntMhzfQz8YpiJ2zy+30rjDCHlq8WrY0wcOhlzBiJ3s1PiZM7wf//OOzjGSts16EjY9zzXY4a1fHaa/1sbnLWjyOqUtW83KdpjPy2tee6xsJ+VuuJra7lV/nITF4R9R9njGSUREZEDG0oiIiKHE6rrdeSQyI90mTm3v4mbgl2vFa1g0xYTpw0/zUob0/m3Jq52+/cmXnHzw1a+NvPGRiy/2Zt+p2ragtUmLjp2NFx2SqCMXLsLdUBuJxO3BK9mTSa1XlkSshw+32R0ibJEe2ijBVZGyBdZYclZyh3PKImIiBzYUBIRETmwoSQiInI4ocYo39jsj4VMyEzsxJ1Udgp377aWq70fWH7fDweju5WvFaJ7qg6fw0RE8eAZJRERkQMbSiIiIocTqutVPvQftH1nI/vBzFnLk/GiYyIiSnY8oyQiInJgQ0lEROTAhpKIiMjhhBqjzHrkExOvfcROqx7lrQRERERBPKMkIiJyYENJRETkoET43BIiIqJIeEZJRETkwIaSiIjIgQ0lERGRAxtKIiIiBzaUREREDmwoiYiIHP4f59bc6M/8lTAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    ckpt = tf.train.get_checkpoint_state('./')\n",
    "    if ckpt and ckpt.model_checkpoint_path:\n",
    "        saver.restore(sess, ckpt.model_checkpoint_path)\n",
    "        final_pred, acc = sess.run(\n",
    "            [pred, accuracy],\n",
    "            feed_dict={\n",
    "                x: mnist.test.images[:16],\n",
    "                y: mnist.test.labels[:16]\n",
    "            })\n",
    "        orders = np.argsort(final_pred)\n",
    "        plt.figure(figsize=(8, 8))\n",
    "        print(acc)\n",
    "        for idx in range(16):\n",
    "            order = orders[idx, :][-1]\n",
    "            prob = final_pred[idx, :][order]\n",
    "            plt.subplot(4, 4, idx + 1)\n",
    "            plt.axis('off')\n",
    "            plt.title('{}: [{}]-[{:.1f}%]'.format(mnist.test.labels[idx],\n",
    "                                                  order, prob * 100))\n",
    "            plt.imshow(mnist.test.images[idx].reshape((28, 28)))\n",
    "\n",
    "    else:\n",
    "        pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "解释这⾥的模型为什么效果⽐较差\n",
    "1.模型过于简单，导致训练集上的效果不好\n",
    "2.训练的次数过少\n",
    "3.激活函数不合适\n",
    "4.学习率太低，没有调整学习率"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
